const fs = require('fs');


let path = './tmp/';

const file = path + 'test.txt';

// 创建目录 不管目录是否存在
// fs.mkdir(path, { recursive: true }, function (error) {
//    if (error) {
//        return console.error(error);
//    }
//    console.log("目录创建成功。");
// });


// 写入文件 异步 writeFile， 同步 writeFileSync
// fs.writeFile(file, 'dddddfdfds', error => {
// 	// error 写入成功 null，写入失败 返回错误对象
// 	if (error) {
// 		console.log('异步写入 fail', error.message);
// 		return false;
// 	}
// 	console.log('异步写入 success');
// });

fs.writeFileSync(file, 'dddddfdfds');

// 读取文件 异步 readFile，同步 readFileSync
// function (error, data)  可以写成 (error, data) => 
// fs.readFile(file, function (error, data) {
//    if (error) {
//        return console.error(error);
//    }
//    console.log("异步读取: " + data.toString());
// });


let data = fs.readFileSync(file);
// console.log("同步读取: " + data.toString());


// 删除文件
// fs.unlink(file, function (error) {
//    if (error) {
//        return console.error(error);
//    }
//    console.log("文件删除成功！");
// });

// 流式写入与读取





let stream = '';

// 创建可读流
let readerStream = fs.createReadStream(file);

// 设置编码为 utf8。
readerStream.setEncoding('UTF8');

// 处理流事件 --> data, end, and error
readerStream.on('data', function (chunk) {
   stream += chunk;
});

readerStream.on('end',function() {
   console.log('stream end '+ stream);
});

readerStream.on('error', function (err) {
   console.log(err.stack);
});

console.log("stream 程序执行完毕");
